/**
 * 
 */
package br.unifor.mia.cd.middleware.arcademis.marshalable;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


/**
 * Anotação de marcação para serializar um objeto.
 * @author arthurlandim
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface Marshalable {
	
	/**
	 * Coleção de decoradores a serem usados. <br>
	 * devem estar na ordem de execução.
	 */	
	Class<? extends MarshallerDecorator>[] decorators() default {};
	
	/**
	 * Decorador a ser usado.
	 */
	Class<? extends MarshallerDecorator> decorator() default MarshallerDecorator.class;
	
}
